<?php 
class Custom_Controller_Plugin_Pinyin extends Zend_Controller_Plugin_Abstract
{
	static $data = array(
	                      array('a',-20319),
	                      array('ai',-20317),
	                      array('an',-20304),
	                      array('ang',-20295),
	                      array('ao',-20292),
	                      array('ba',-20283),
	                      array('bai',-20265),
	                      array('ban',-20257),
	                      array('bang',-20242),
	                      array('bao',-20230),
	                      array('bei',-20051),
	                      array('ben',-20036),
	                      array('beng',-20032),
	                      array('bi',-20026),
	                      array('bian',-20002),
	                      array('biao',-19990),
	                      array('bie',-19986),
	                      array('bin',-19982),
	                      array('bing',-19976),
	                      array('bo',-19805),
	                      array('bu',-19784),
	                      array('ca',-19775),
	                      array('cai',-19774),
	                      array('can',-19763),
	                      array('cang',-19756),
	                      array('cao',-19751),
	                      array('ce',-19746),
	                      array('ceng',-19741),
	                      array('cha',-19739),
	                      array('chai',-19728),
	                      array('chan',-19725),
	                      array('chang',-19715),
	                      array('chao',-19540),
	                      array('che',-19531),
	                      array('chen',-19525),
	                      array('cheng',-19515),
	                      array('chi',-19500),
	                      array('chong',-19484),
	                      array('chou',-19479),
	                      array('chu',-19467),
	                      array('chuai',-19289),
	                      array('chuan',-19288),
	                      array('chuang',-19281),
	                      array('chui',-19275),
	                      array('chun',-19270),
	                      array('chuo',-19263),
	                      array('ci',-19261),
	                      array('cong',-19249),
	                      array('cou',-19243),
	                      array('cu',-19242),
	                      array('cuan',-19238),
	                      array('cui',-19235),
	                      array('cun',-19227),
	                      array('cuo',-19224),
	                      array('da',-19218),
	                      array('dai',-19212),
	                      array('dan',-19038),
	                      array('dang',-19023),
	                      array('dao',-19018),
	                      array('de',-19006),
	                      array('deng',-19003),
	                      array('di',-18996),
	                      array('dian',-18977),
	                      array('diao',-18961),
	                      array('die',-18952),
	                      array('ding',-18783),
	                      array('diu',-18774),
	                      array('dong',-18773),
	                      array('dou',-18763),
	                      array('du',-18756),
	                      array('duan',-18741),
	                      array('dui',-18735),
	                      array('dun',-18731),
	                      array('duo',-18722),
	                      array('e',-18710),
	                      array('en',-18697),
	                      array('er',-18696),
	                      array('fa',-18526),
	                      array('fan',-18518),
	                      array('fang',-18501),
	                      array('fei',-18490),
	                      array('fen',-18478),
	                      array('feng',-18463),
	                      array('fo',-18448),
	                      array('fou',-18447),
	                      array('fu',-18446),
	                      array('ga',-18239),
	                      array('gai',-18237),
	                      array('gan',-18231),
	                      array('gang',-18220),
	                      array('gao',-18211),
	                      array('ge',-18201),
	                      array('gei',-18184),
	                      array('gen',-18183),
	                      array('geng',-18181),
	                      array('gong',-18012),
	                      array('gou',-17997),
	                      array('gu',-17988),
	                      array('gua',-17970),
	                      array('guai',-17964),
	                      array('guan',-17961),
	                      array('guang',-17950),
	                      array('gui',-17947),
	                      array('gun',-17931),
	                      array('guo',-17928),
	                      array('ha',-17922),
	                      array('hai',-17759),
	                      array('han',-17752),
	                      array('hang',-17733),
	                      array('hao',-17730),
	                      array('he',-17721),
	                      array('hei',-17703),
	                      array('hen',-17701),
	                      array('heng',-17697),
	                      array('hong',-17692),
	                      array('hou',-17683),
	                      array('hu',-17676),
	                      array('hua',-17496),
	                      array('huai',-17487),
	                      array('huan',-17482),
	                      array('huang',-17468),
	                      array('hui',-17454),
	                      array('hun',-17433),
	                      array('huo',-17427),
	                      array('ji',-17417),
	                      array('jia',-17202),
	                      array('jian',-17185),
	                      array('jiang',-16983),
	                      array('jiao',-16970),
	                      array('jie',-16942),
	                      array('jin',-16915),
	                      array('jing',-16733),
	                      array('jiong',-16708),
	                      array('jiu',-16706),
	                      array('ju',-16689),
	                      array('juan',-16664),
	                      array('jue',-16657),
	                      array('jun',-16647),
	                      array('ka',-16474),
	                      array('kai',-16470),
	                      array('kan',-16465),
	                      array('kang',-16459),
	                      array('kao',-16452),
	                      array('ke',-16448),
	                      array('ken',-16433),
	                      array('keng',-16429),
	                      array('kong',-16427),
	                      array('kou',-16423),
	                      array('ku',-16419),
	                      array('kua',-16412),
	                      array('kuai',-16407),
	                      array('kuan',-16403),
	                      array('kuang',-16401),
	                      array('kui',-16393),
	                      array('kun',-16220),
	                      array('kuo',-16216),
	                      array('la',-16212),
	                      array('lai',-16205),
	                      array('lan',-16202),
	                      array('lang',-16187),
	                      array('lao',-16180),
	                      array('le',-16171),
	                      array('lei',-16169),
	                      array('leng',-16158),
	                      array('li',-16155),
	                      array('lia',-15959),
	                      array('lian',-15958),
	                      array('liang',-15944),
	                      array('liao',-15933),
	                      array('lie',-15920),
	                      array('lin',-15915),
	                      array('ling',-15903),
	                      array('liu',-15889),
	                      array('long',-15878),
	                      array('lou',-15707),
	                      array('lu',-15701),
	                      array('lv',-15681),
	                      array('luan',-15667),
	                      array('lue',-15661),
	                      array('lun',-15659),
	                      array('luo',-15652),
	                      array('ma',-15640),
	                      array('mai',-15631),
	                      array('man',-15625),
	                      array('mang',-15454),
	                      array('mao',-15448),
	                      array('me',-15436),
	                      array('mei',-15435),
	                      array('men',-15419),
	                      array('meng',-15416),
	                      array('mi',-15408),
	                      array('mian',-15394),
	                      array('miao',-15385),
	                      array('mie',-15377),
	                      array('min',-15375),
	                      array('ming',-15369),
	                      array('miu',-15363),
	                      array('mo',-15362),
	                      array('mou',-15183),
	                      array('mu',-15180),
	                      array('na',-15165),
	                      array('nai',-15158),
	                      array('nan',-15153),
	                      array('nang',-15150),
	                      array('nao',-15149),
	                      array('ne',-15144),
	                      array('nei',-15143),
	                      array('nen',-15141),
	                      array('neng',-15140),
	                      array('ni',-15139),
	                      array('nian',-15128),
	                      array('niang',-15121),
	                      array('niao',-15119),
	                      array('nie',-15117),
	                      array('nin',-15110),
	                      array('ning',-15109),
	                      array('niu',-14941),
	                      array('nong',-14937),
	                      array('nu',-14933),
	                      array('nv',-14930),
	                      array('nuan',-14929),
	                      array('nue',-14928),
	                      array('nuo',-14926),
	                      array('o',-14922),
	                      array('ou',-14921),
	                      array('pa',-14914),
	                      array('pai',-14908),
	                      array('pan',-14902),
	                      array('pang',-14894),
	                      array('pao',-14889),
	                      array('pei',-14882),
	                      array('pen',-14873),
	                      array('peng',-14871),
	                      array('pi',-14857),
	                      array('pian',-14678),
	                      array('piao',-14674),
	                      array('pie',-14670),
	                      array('pin',-14668),
	                      array('ping',-14663),
	                      array('po',-14654),
	                      array('pu',-14645),
	                      array('qi',-14630),
	                      array('qia',-14594),
	                      array('qian',-14429),
	                      array('qiang',-14407),
	                      array('qiao',-14399),
	                      array('qie',-14384),
	                      array('qin',-14379),
	                      array('qing',-14368),
	                      array('qiong',-14355),
	                      array('qiu',-14353),
	                      array('qu',-14345),
	                      array('quan',-14170),
	                      array('que',-14159),
	                      array('qun',-14151),
	                      array('ran',-14149),
	                      array('rang',-14145),
	                      array('rao',-14140),
	                      array('re',-14137),
	                      array('ren',-14135),
	                      array('reng',-14125),
	                      array('ri',-14123),
	                      array('rong',-14122),
	                      array('rou',-14112),
	                      array('ru',-14109),
	                      array('ruan',-14099),
	                      array('rui',-14097),
	                      array('run',-14094),
	                      array('ruo',-14092),
	                      array('sa',-14090),
	                      array('sai',-14087),
	                      array('san',-14083),
	                      array('sang',-13917),
	                      array('sao',-13914),
	                      array('se',-13910),
	                      array('sen',-13907),
	                      array('seng',-13906),
	                      array('sha',-13905),
	                      array('shai',-13896),
	                      array('shan',-13894),
	                      array('shang',-13878),
	                      array('shao',-13870),
	                      array('she',-13859),
	                      array('shen',-13847),
	                      array('sheng',-13831),
	                      array('shi',-13658),
	                      array('shou',-13611),
	                      array('shu',-13601),
	                      array('shua',-13406),
	                      array('shuai',-13404),
	                      array('shuan',-13400),
	                      array('shuang',-13398),
	                      array('shui',-13395),
	                      array('shun',-13391),
	                      array('shuo',-13387),
	                      array('si',-13383),
	                      array('song',-13367),
	                      array('sou',-13359),
	                      array('su',-13356),
	                      array('suan',-13343),
	                      array('sui',-13340),
	                      array('sun',-13329),
	                      array('suo',-13326),
	                      array('ta',-13318),
	                      array('tai',-13147),
	                      array('tan',-13138),
	                      array('tang',-13120),
	                      array('tao',-13107),
	                      array('te',-13096),
	                      array('teng',-13095),
	                      array('ti',-13091),
	                      array('tian',-13076),
	                      array('tiao',-13068),
	                      array('tie',-13063),
	                      array('ting',-13060),
	                      array('tong',-12888),
	                      array('tou',-12875),
	                      array('tu',-12871),
	                      array('tuan',-12860),
	                      array('tui',-12858),
	                      array('tun',-12852),
	                      array('tuo',-12849),
	                      array('wa',-12838),
	                      array('wai',-12831),
	                      array('wan',-12829),
	                      array('wang',-12812),
	                      array('wei',-12802),
	                      array('wen',-12607),
	                      array('weng',-12597),
	                      array('wo',-12594),
	                      array('wu',-12585),
	                      array('xi',-12556),
	                      array('xia',-12359),
	                      array('xian',-12346),
	                      array('xiang',-12320),
	                      array('xiao',-12300),
	                      array('xie',-12120),
	                      array('xin',-12099),
	                      array('xing',-12089),
	                      array('xiong',-12074),
	                      array('xiu',-12067),
	                      array('xu',-12058),
	                      array('xuan',-12039),
	                      array('xue',-11867),
	                      array('xun',-11861),
	                      array('ya',-11847),
	                      array('yan',-11831),
	                      array('yang',-11798),
	                      array('yao',-11781),
	                      array('ye',-11604),
	                      array('yi',-11589),
	                      array('yin',-11536),
	                      array('ying',-11358),
	                      array('yo',-11340),
	                      array('yong',-11339),
	                      array('you',-11324),
	                      array('yu',-11303),
	                      array('yuan',-11097),
	                      array('yue',-11077),
	                      array('yun',-11067),
	                      array('za',-11055),
	                      array('zai',-11052),
	                      array('zan',-11045),
	                      array('zang',-11041),
	                      array('zao',-11038),
	                      array('ze',-11024),
	                      array('zei',-11020),
	                      array('zen',-11019),
	                      array('zeng',-11018),
	                      array('zha',-11014),
	                      array('zhai',-10838),
	                      array('zhan',-10832),
	                      array('zhang',-10815),
	                      array('zhao',-10800),
	                      array('zhe',-10790),
	                      array('zhen',-10780),
	                      array('zheng',-10764),
	                      array('zhi',-10587),
	                      array('zhong',-10544),
	                      array('zhou',-10533),
	                      array('zhu',-10519),
	                      array('zhua',-10331),
	                      array('zhuai',-10329),
	                      array('zhuan',-10328),
	                      array('zhuang',-10322),
	                      array('zhui',-10315),
	                      array('zhun',-10309),
	                      array('zhuo',-10307),
	                      array('zi',-10296),
	                      array('zong',-10281),
	                      array('zou',-10274),
	                      array('zu',-10270),
	                      array('zuan',-10262),
	                      array('zui',-10260),
	                      array('zun',-10256),
	                      array('zuo',-10254),
                         );

     static function get($str, $charset = 'gbk')
     {
		 $str = trim($str);
     	 if ($charset != 'gbk' && $charset != 'gb2312') $str = iconv($charset, 'gbk', $str);
		 $ret = '';
		 for($i = 0; $i < strlen($str); $i++)
		 {
		 	$p = ord(substr($str, $i, 1));
		 	if($p > 160)
		 	{
		 		$q = ord(substr($str, ++$i, 1));
		 		$p = $p*256 + $q - 65536;
		 	}
		 	$ret .= self::chr($p);
		 }
		 return $ret;
     }
     
	 static function initial($str, $charset = 'gbk')
	 {
		 return strtolower(substr(self::get($str, $charset), 0, 1));
	 }
	
     static function chr($num)
     {
     	 if($num > 0 && $num < 160)
     	 {
     	 	return chr($num);
     	 }
     	 elseif($num < -20319 || $num > -10247)
     	 {
     	 	return '';
     	 }
     	 else
     	 {
     	 	for($i = count(self::$data)-1; $i >= 0; $i--)
     	 	{
     	 		if(self::$data[$i][1] <= $num) break;
     	 	}
     	 	return self::$data[$i][0];
     	 }
     }
}
?>